export class JudgmentExpiration {
  //进入页面时间 单位 秒
  private currentTime = 0
  //接口登录时间 单位 秒
  private interfaceLoginTime = 0
  //接口到期时间 单位 秒
  private expirationTime = 0
  //定时器
  private timer = 0
  //是否过期
  public isExpire = false
  constructor() { }
  public expire(interfaceLoginTime: number, expirationTime: number, needLogin = true) {
    //从本地获取接口登录时间
    this.interfaceLoginTime = interfaceLoginTime
    //提前1小时
    this.expirationTime = expirationTime - 3600

    //获取本地loginStatus状态
    const loginStatus = wx.getStorageSync('loginStatus') || false

    //判断登录时间是否过期
    if(needLogin){
      this.isExpire = loginStatus ? ((Number(this.interfaceLoginTime) + this.expirationTime) <= Math.floor(Date.now() / 1000) ? true : false) : true
    }else{
      this.isExpire = ((Number(this.interfaceLoginTime) + this.expirationTime) <= Math.floor(Date.now() / 1000) ? true : false) 
    }
   

    return this.isExpire
  }
  init(interfaceLoginTime: number, expirationTime: number, callback = () => { }) {
    this.clear()
    //从本地获取接口登录时间
    this.interfaceLoginTime = interfaceLoginTime
    this.expirationTime = expirationTime
    //记录打开程序的时间
    this.currentTime = Math.floor(Date.now() / 1000);
    //接口登录时间戳 + 后端返回的过期时间 >= 当前时间戳 即时间过期
    //开启定时器，每秒执行一次判断时间是否过期
    this.timer = setInterval(() => {
      this.currentTime = Math.floor(Date.now() / 1000);
      if (Number(this.interfaceLoginTime) + this.expirationTime <= this.currentTime) {
        clearInterval(this.timer)
        callback()
      }
    }, 1000)
  }

  clear() {
    this.timer && clearInterval(this.timer)
  }
}